package com.hgyc.mom.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hgyc.mom.system.entity.SysMenu;
import com.hgyc.mom.system.vo.MenuVO;

import java.util.List;

/**
 * <p>
 * 系统菜单 服务类
 * </p>
 *
 * @author fwj
 * @since 2025-01-16
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 获取权限列表（包含菜单及按钮）
     * @return 权限
     */
    List<MenuVO> all();

    /**
     * 获取用户菜单权限
     * @param userId 用户ID
     * @return 菜单
     */
    List<MenuVO> getUserMenu(Long userId);

    List<String> getUserPermissions(Long userId);

    /**
     * 获取角色菜单权限
     * @param roleId 角色ID
     * @return 菜单权限
     */
    List<MenuVO> getRoleMenu(Long userId);

    /**
     * 获取角色拥有的权限ID
     * @param roleId 角色ID
     * @return 角色ID
     */
    List<Long> roleAuth(Long roleId);

    /**
     * 根据ID查询菜单
     * @param id 菜单ID
     * @return 菜单信息
     */
    SysMenu queryById(Long id);

    /**
     * 根据ID删除菜单及子菜单
     * @param id 菜单ID
     */
    void deleteMenu(Long id);
}
